package Dao;

import static DataBase.DataBase.*;
import DataBase.Resultado;
import Model.Paciente;
import javax.swing.JOptionPane;

/**
 *
 * @author Cleiviane
 */
public class PacienteDao {

    public static boolean inserirPaciente(Paciente paciente){

        try {
                Object[] valores = new Object[10];
                valores[0] = paciente.getProntuario();
                valores[1] = paciente.getNome();
                valores[2] = paciente.getCpf();
                valores[3] = paciente.getEndereco();
                valores[4] = paciente.getDoencas();
                valores[5] = paciente.getSituacao();
                valores[6] = paciente.getData_nasc();
                valores[7] = paciente.getTelefone();
                valores[8] = paciente.getDadosClin();
                valores[9] = paciente.getCelular();
                executaOperacao("insert into pacientes values(?,?,?,?,?,?,?,?,?,?)", valores);
            return true;
        } catch (Exception e) {
            return false;

        }

    }

    public static Paciente localizarPaciente(String nome){
        Paciente paciente = new Paciente();
        return paciente;
    }

    public static Paciente localizarPacientePorCodigo(int prontuario){
        Object[] valores = new Object[1];
        valores[0] = prontuario;

        Resultado result = executaConsulta("select * from pacientes where prontuario = ?", valores);

        if(result.qtdRegistros() != 0){
            Paciente paciente = new Paciente();
            paciente.setProntuario((Integer)result.valorCampo(0, "prontuario"));
            paciente.setNome((String)result.valorCampo(0, "nome"));
            paciente.setCpf((String) result.valorCampo(0, "cpf"));
            paciente.setEndereco((String) result.valorCampo(0, "endereco"));
            paciente.setDoencas((String) result.valorCampo(0, "doencas"));
            paciente.setSituacao((Integer) result.valorCampo(0, "situacao"));
            paciente.setData_nasc((String) result.valorCampo(0, "data_nasc"));
            paciente.setTelefone((String) result.valorCampo(0, "telefones"));
            paciente.setDadosClin((String) result.valorCampo(0, "dados_clinicos"));
            paciente.setCelular((String) result.valorCampo(0, "celular"));
            return paciente;
        }else
            return null;
    }

    public static void excluirPaciente( Integer prontuario){
         Object[] valores = new Object[1];
         valores[0] = prontuario;

         executaOperacao("delete from pacientes where prontuario = ?", valores);
    }


    public static void excluirPaciente(Paciente paciente){

    }


    public static void alterarPaciente(Paciente paciente){
        try {
            Object[] valores = new Object[10];
            valores[0] = paciente.getNome();
            valores[1] = paciente.getCpf();
            valores[2] = paciente.getEndereco();
            valores[3] = paciente.getDoencas();
            valores[4] = paciente.getSituacao();
            valores[5] = paciente.getData_nasc();
            valores[6] = paciente.getTelefone();
            valores[7] = paciente.getDadosClin();
            valores[8] = paciente.getCelular();
            valores[9] = paciente.getProntuario();
            executaOperacao(
                    "update pacientes set nome=?,cpf=?,endereco=?,doencas=?,situacao=?,data_nasc=?,telefones=?,dados_clinicos=?,celular=? where prontuario = ?"
                    , valores);
            JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso.");

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Erro ao Inserir.");
        }
    }

    public static boolean validaCpf(String cpf){
       if (cpf.length() == 11 ){
           int     d1, d2, digito1, digito2, resto, digitoCPF;
           String  nDigResult;

           d1 = d2 = 0;
           digito1 = digito2 = resto = 0;

           for (int n_Count = 1; n_Count < cpf.length() -1; n_Count++){
              digitoCPF = Integer.valueOf (cpf.substring(n_Count -1, n_Count)).intValue();
              d1 = d1 + ( 11 - n_Count ) * digitoCPF;
              d2 = d2 + ( 12 - n_Count ) * digitoCPF;
           }
           resto = (d1 % 11);
           if (resto < 2)
              digito1 = 0;
           else
              digito1 = 11 - resto;
           d2 += 2 * digito1;
           resto = (d2 % 11);
           if (resto < 2)
              digito2 = 0;
           else
              digito2 = 11 - resto;
           String nDigVerific = cpf.substring (cpf.length()-2, cpf.length());
           nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

           return nDigVerific.equals(nDigResult);
        }else{
           return false;
        }

    }

}
